#ifndef _M_LOGGER_H__ //防止头文件重复包含
#define _M_LOGGER_H__

#include<stdio.h>
#include<time.h>

//定义日志等级
#define INF 0 //表示是提示性质的日志等级
#define DBG 1
#define ERR 2
#define DEFAULT_LOG_LEVEL DBG//默认日志等级

//实现一个自己的日志宏
//format 格式
//...不定参数
//level为输入的日志等级
#define LOG(level,format,...) do{\// \为行航符,宏不允许不在同一行
    if(DEFAULT_LOG_LEVEL>level) break;\//如果默认日志等级大于传入等级。就不会输入其日志信息
    time_t t=time(NULL);\//获得时间戳
    struct tm *lt=localtime(&t);\//把时间戳进行格式转换
    char buf[32]=0;\
    strftime(buf,31,"%H:%M:%S",lt);\//把时间转成固定格式的字符串
    fprintf(stdout,"[%s:%s:%d]"format"\n"，buf,__FILE__,__LINE__,##__VA_ARGS__);}\//打印格式为·[时间：文件名：行号]
    //##__VA_ARGS__ 注意用法，加上##可以不传参调用该日志宏
    while(0)

#define ILOG(foemat,...) LOG(INF,format,##__VA_ARGS__)//三种不同等级的日志，会传入不同的日志信息
#define DLOG(foemat,...) LOG(DBG,format,##__VA_ARGS__)
#define ELOG(foemat,...) LOG(ERR,format,##__VA_ARGS__)


#endif